// 这是 路由处理函数 模块

// 导入数据库操作模块
const db = require('../db/index');

// 获取文章类别
exports.getArticleCates = (req, res) => {
    const sqlSelect = 
    'SELECT * FROM ev_artical_cate WHERE is_delete=0 ORDER BY id ASC';
    db.query(sqlSelect, (err, results) => {
        if (err) return res.cc(err);
        res.send({
            status: 0,
            message: '获取文章分类成功!',
            data: results
        });
    });
}

// 新增文章分类
exports.addArticleCates = (req, res) => {
    // 查重
    const sqlSelect = 'SELECT * FROM ev_artical_cate WHERE name=? OR alias=?';
    db.query(sqlSelect, [req.body.name, req.body.alias], (err, results) => {
        // SQL执行失败
        if (err) return res.cc(err);
        // 名称 和 别名 同时被占用
        if (results.length === 2) return res.cc('[分类名称]/[别名]已经被占用,请更换后重试!');
        // 分别判断 名称 和 别名
        if (results.length === 1 && results[0].name === req.body.name)
            return res.cc('[分类名称]已被占用,请更换后重试!');
        if (results.length === 1 && results[0].alias === req.body.alias)
            return res.cc('[别名]已经被占用,请更换后重试!');

        // 新增
        const sqlInsert = 'INSERT INTO ev_artical_cate SET ?';
        db.query(sqlInsert, req.body, (err, results) => {
            if (err) return res.cc(err);
            if (results.affectedRows !== 1) return res.cc('新增文章分类失败!');
            res.cc('新增文章分类成功!', 0);
        });
    });
}

// 删除文章分类    根据id
exports.deleteCateById = (req, res) => {
    const sqlDel = 'UPDATE ev_artical_cate SET is_delete=1 WHERE id=?';
    db.query(sqlDel, req.params.id, (err, results) => {
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) return res.cc('删除文章分类失败!');
        res.cc('删除文章分类成功!', 0);
    });
}

// 获取文章分类    根据id
exports.getArtCateById = (req, res) => {
    const sqlSelect = 'SELECT * FROM ev_artical_cate WHERE id=?';
    db.query(sqlSelect, req.params.id, (err, results) => {
        if (err) return res.cc(err);
        if (results.length !== 1) return res.cc('获取文章分类数据失败!');
        // 响应数据给 客户端
        if (results[0].is_delete = 1) return res.cc('该文章分类已被删除!');
        res.send({
            status: 0,
            message: '获取文章分类数据成功!',
            data: results[0]
        });
    });
}

// 更新文章分类    根据id
exports.updateCateById = (req, res) => {
    // 查重
    const sqlSelectIsRepeated = 'SELECT * FROM ev_artical_cate WHERE id<>? AND(name=? OR alias=?)';
    db.query(sqlSelectIsRepeated,
        [req.body.Id, req.body.name, req.body.alias],
        (err, results) => {
            if (err) return res.cc(err);

            // 分类名称/分类别名都被占用
            if (results.length === 2) return res.cc('[分类信息]与[分类别名]都已被占用!');
            // 分类名称 分类别名 分别被占用
            if (results.length === 1) {
                if (results[0].name === req.body.name || results[0].alias === req.body.alias) {
                    return res.cc('[分类信息]或者[分类别名]已被占用!');
                }
            }
            //更新
            const sqlUpdateById = 'UPDATE ev_artical_cate SET ? WHERE Id=?';
            db.query(sqlUpdateById, [req.body, req.body.Id], (err, results) => {
                if (err) return res.cc(err);
                if (results.affectedRows !== 1) return res.cc('更新文章分类失败!');
                res.cc('更新文章分类成功!', 0);
            });
        });
}
